<?php

class IscrizioneController extends Zend_Controller_Action
{
    /**
     * @var Application_Model_Iscriziones 
     */
    protected $_iscriziones = null;
    
    /**
     * @var Cms_Model_Users 
     */
    protected $_users = null;
    
    /**
     * @var Cms_Model_User 
     */
    protected $_currentUser;
    
    /**
     * @var Application_Model_Eventos 
     */
    protected $_eventos = null;
    
    /**
     * @var Zend_Auth 
     */
    protected $_auth = null;


    public function init()
    {
        // Breadcrumbs configuration
        $uri = $this->_request->getPathInfo();
        $activeNav = $this->view->navigation()->findByUri($uri);
        if ($activeNav) { // Controllo per evitare "Strict standards: Creating default object from empty value"
            $activeNav->active = true;
        }
        
        $this->_iscriziones = new Application_Model_Iscriziones();
        $this->_users = new Cms_Model_Users;
        $this->_eventos = new Application_Model_Eventos;
        
        if (Zend_Auth::getInstance()->hasIdentity()) {
            $this->_auth = Zend_Auth::getInstance();
        }
        $userIdentity = $this->_auth->getIdentity();
        $this->view->userIdentity = $userIdentity;
        // Logged user
        $this->_currentUser = $this->_users->getUserById($userIdentity->userId);
    }

    public function indexAction()
    {
        $ident = $this->_getParam('ident');
        $evCurrent = $this->_eventos->getEventoByIdent($ident);
        $this->view->evCurrent = $evCurrent;
        
        $iscrizioneForm = new Application_Form_Iscrizione();
        $iscrizioneForm->setAction('/iscrizione/' . $evCurrent->evIdent);
        
        if ($this->_request->isPost()) {
            if ($iscrizioneForm->isValid($_POST)) {
                // -Recupero di dati dal form di iscrizione
                $cell = $iscrizioneForm->getValue('cell');
                $tessera = $iscrizioneForm->getValue('tessera');
                $partecipanti = $iscrizioneForm->getValue('partecipanti');
                $osservazioni = $iscrizioneForm->getValue('osservazioni');
                
                // -Scrivo l'iscrizione nel database (tabella iscriziones)
                $rowIscrizione = $this->_iscriziones->createIscrizione($this->_currentUser->userId,
                        $evCurrent->evId,
                        $partecipanti);
                if ($rowIscrizione) {
                    // -Scrivo il numero di telefono e la tessera nel database (tabella users)
                    $this->_users->updateTelUser($this->_currentUser->userId, $cell);
                    $this->_users->updateTesseraUser($this->_currentUser->userId, $tessera);

                    // -Preparo ed invio la mail all'utente
                    $this->sendIscrizioneMailToUser($this->_currentUser->userEmail, 
                            $this->_currentUser->userNome, 
                            $evCurrent);

                    // -Preparo ed invio la mail a Matteo
                    $this->sendIscrizioneMailToAdmin('andrea@ilbivacco-toscana.it', 
                            'Andrea', 
                            $evCurrent, 
                            $osservazioni, 
                            $partecipanti, 
                            $tessera, 
                            $cell);

                    // -Redirect verso la homepage con flashmessage
                    // FlashMessage
                    $this->_helper->flashMessenger->addMessage('Iscrizione effettuata con successo!');
                    $this->_redirect('/');
                } else {
                    // Utilizzando _forward non rinnovo la richiesta in questa
                    // maniera 
                    $this->_forward('index', 'index', 'default');
                }
            }
        }
        
        $this->view->iscrizioneForm = $iscrizioneForm;
    }
    
    public function sendIscrizioneMailToUser($to, $toName, Application_Model_Evento $evento)
    {
        $sender = 'Associazione Il Bivacco';
        $senderEmail = 'info@ilbivacco-toscana.it';
        
        $dataInizioZend = new Zend_Date($evento->evDataInizio, 'd-m-Y');
        $dataInizio = $dataInizioZend->get('d/m/Y');
        $subject = 'Iscrizione all\'evento ' . $evento->evTitolo . ' del ' . $dataInizio;
        
        $message = 'Ciao ' . $toName . '!' . "\r\n";
        $message .= "\r\n";
        $message .= 'Ti confermiamo l\'iscrizione all\'evento ';
        $message .= '"';
        $message .= "$evento->evTitolo" . '"' . "(http://www.ilbivacco-toscana.it/evento/$evento->evIdent) ";
        $message .= 'del ' . $dataInizio . "\r\n" . "\r\n";
        $message .= 'Grazie!!' . "\r\n" . 'E seguici su ';
        $message .= 'http://www.ilbivacco-toscana.it' . "\r\n" . "\r\n";
        $message .= '-------- __@      __@       __@       __@      __~@' . "\r\n";
        $message .= '----- _`\<,_    _`\<,_    _`\<,_     _`\<,_    _`\<,_' . "\r\n";
        $message .= '---- (*)/ (*)  (*)/ (*)  (*)/ (*)  (*)/ (*)  (*)/ (*)' . "\r\n";
        $message .= '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' . "\r\n";
        
        $mail = new Zend_Mail();
        $mail->setSubject($subject);
        $mail->setFrom($senderEmail, $sender);
        $mail->addTo($to, $toName);
        $mail->setBodyText($message);
        
        return $mail->send();
    }
    
    public function sendIscrizioneMailToAdmin($to, $toName, Application_Model_Evento $evento, $osservazioni, $partecipanti, $tessera, $cell)
    {
        $sender = 'bivacco-toscana.it';
        $senderEmail = 'info@ilbivacco-toscana.it';
        
        $dataInizioZend = new Zend_Date($evento->evDataInizio, 'd-m-Y');
        $dataInizio = $dataInizioZend->get('d/m/Y');
        $subject = 'Iscrizione all\'evento ' . $evento->evTitolo . ' del ' . $dataInizio;
        
        $message = '#####Iscrizione dal sito.#######' . "\r\n" . "\r\n";
        $message .= 'Evento: ' . $evento->evTitolo . "\r\n";
        $message .= 'Data: ' . $dataInizio . "\r\n";
        $message .= 'N. tessera: ' . $tessera . "\r\n";
        $message .= 'N. cell: ' . $cell . "\r\n";
        $message .= 'N. partecipanti: ' . $partecipanti . "\r\n";
        $message .= 'Osservazioni: ' . $osservazioni . "\r\n";
        
        $mail = new Zend_Mail();
        $mail->setSubject($subject);
        $mail->setFrom($senderEmail, $sender);
        $mail->addTo($to, $toName);
        $mail->setBodyText($message);
        
        return $mail->send();
    }
    
    public function listActivesAction()
    {
        $isc = new Application_Model_Iscriziones();
        $iscActives = $isc->getActivesIscriziones();
        $this->view->iscActives = $iscActives;
    }
    
    public function listAction()
    {
        $id = $this->_getParam('id');
        $isc = new Application_Model_Iscriziones();
        $iscList = $isc->getIscrizionesByUserId($id);
        $this->view->iscList = $iscList;
        
        // Configure filter
        $form = new Application_Form_UserFilterForm();
        $form->setAction('/archivio-iscrizioni');
        $this->view->form = $form;
        if ($this->_request->isPost()) {
            if ($form->isValid($_POST)) {
                $id = $form->getValue('users');
                $this->_redirect('/archivio-iscrizioni/' . $id);
            }
        }
    }
}

